package main

import (
	"fmt"
	"sync"
)

var wg sync.WaitGroup //这里用到了WaitGroup，它阻塞主线程，等待其它线程执行结束，直到计数器为0

//go 协程
func main() {
	fmt.Println("examp20")
	//线程使用一，通过WaitGroup阻塞主线程
	wg.Add(13)  //添加2个计数器
	go test1(1) //创建一个go协程
	go func(x int) {
		fmt.Println(x, "abcd")
		wg.Done() //done方法减少一个计数
	}(2)
	nfun := func(x int) {
		fmt.Println(x, "nfun")
		wg.Done() //done方法减少一个计数
	}
	go nfun(1)
	for i := 0; i < 10; i++ {
		go test1(i)
	}
	wg.Wait() //阻塞

}

func test1(i int) {
	fmt.Println(i, "test1 go")
	wg.Done() //done方法减少一个计数
}
